/**
 * 月计算
 * 		eg1: 2020-5-31的5个月前  参数:2020,5-5,31  结果:2019-12-31
 * 		eg2: 2020-1-31的2个月前  参数:2020,1-2,31  结果:2019-11-30
 * @param y int|string 年
 * @param m int|string 月计算 1开始, 0:上年12月, <0:上年12月减月数
 * @param d int|string 日计算 若d大于计算月天数,则取月最后一天日期
 * @param o boolean 是否返回Date实例(当前时区)  false:返回array
 * @return array|Date  array:[y,m,d],m=月以1开始 Date:0时0分0秒
 */
$.dateMonth = function (y, m, d, o=false){
	if(m>0){ let x=m%12; y=y*1+Math.floor(m/12)-(x?0:1); m=x?x:12; }
	else{ m=-m;  let x=m%12;  y-=Math.floor(m/12)+1;  m=12-x; }
	let Y=y, M=m;  if(m>11){ Y++; M=1; } else M++; // 下月的:年月
	let max=new Date(new Date(Y+'/'+M+'/1 00:00:00')*1-1).getDate();
	let rtn=[y,m,d>max?max:d];  if(!o) return rtn;
	return new Date(rtn.join('/')+' 00:00:00');
};
